//package com.syni.mdd.yhd.common.all.utils;
//
//import com.alibaba.fastjson.JSONObject;
//import com.syni.app.config.WxConfig;
//import com.syni.app.entity.Button;
//import com.syni.app.entity.ClickButton;
//import com.syni.app.entity.Menu;
//import com.syni.app.entity.ViewButton;
//import org.apache.http.HttpEntity;
//import org.apache.http.NameValuePair;
//import org.apache.http.client.ClientProtocolException;
//import org.apache.http.client.entity.UrlEncodedFormEntity;
//import org.apache.http.client.methods.CloseableHttpResponse;
//import org.apache.http.client.methods.HttpPost;
//import org.apache.http.entity.StringEntity;
//import org.apache.http.impl.client.CloseableHttpClient;
//import org.apache.http.impl.client.HttpClients;
//import org.apache.http.message.BasicNameValuePair;
//import org.apache.http.util.CharArrayBuffer;
//import org.apache.http.util.EntityUtils;
//
//import java.io.*;
//import java.net.*;
//import java.security.MessageDigest;
//import java.security.NoSuchAlgorithmException;
//import java.util.*;
//
//public class WxUtils {
//
//    public static String sendGet(String httpurl) {
//        HttpURLConnection connection = null;
//        InputStream is = null;
//        BufferedReader br = null;
//        String result = null;// 返回结果字符串
//        try {
//            // 创建远程url连接对象
//            URL url = new URL(httpurl);
//            // 通过远程url连接对象打开一个连接，强转成httpURLConnection类
//            connection = (HttpURLConnection) url.openConnection();
//            // 设置连接方式：get
//            connection.setRequestMethod("GET");
//            // 设置连接主机服务器的超时时间：15000毫秒
//            connection.setConnectTimeout(15000);
//            // 设置读取远程返回的数据时间：60000毫秒
//            connection.setReadTimeout(60000);
//            // 发送请求
//            connection.connect();
//            // 通过connection连接，获取输入流
//            if (connection.getResponseCode() == 200) {
//                is = connection.getInputStream();
//                // 封装输入流is，并指定字符集
//                br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
//                // 存放数据
//                StringBuffer sbf = new StringBuffer();
//                String temp = null;
//                while ((temp = br.readLine()) != null) {
//                    sbf.append(temp);
//                    sbf.append("\r\n");
//                }
//                result = sbf.toString();
//            }
//        } catch (MalformedURLException e) {
//            log.error(e.getMessage(),e);
//        } catch (IOException e) {
//            log.error(e.getMessage(),e);
//        } finally {
//            // 关闭资源
//            if (null != br) {
//                try {
//                    br.close();
//                } catch (IOException e) {
//                    log.error(e.getMessage(),e);
//                }
//            }
//
//            if (null != is) {
//                try {
//                    is.close();
//                } catch (IOException e) {
//                    log.error(e.getMessage(),e);
//                }
//            }
//            connection.disconnect();// 关闭远程连接
//        }
//        return result;
//    }
//
//    /**
//     * 向指定 URL 发送POST方法的请求
//     *
//     * @param url   发送请求的 URL
//     * @param param 请求参数，请求参数应该是 name1=value1&name2=value2 的形式。
//     * @return 所代表远程资源的响应结果
//     */
//    public static String sendPost(String url, String param) {
//        PrintWriter out = null;
//        BufferedReader in = null;
//        String result = "";
//        try {
//            URL realUrl = new URL(url);
//            // 打开和URL之间的连接
//            URLConnection conn = realUrl.openConnection();
//            // 设置通用的请求属性
//            conn.setRequestProperty("accept", "*/*");
//            conn.setRequestProperty("connection", "Keep-Alive");
//            conn.setRequestProperty("user-agent",
//                    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
//            // 发送POST请求必须设置如下两行
//            conn.setDoOutput(true);
//            conn.setDoInput(true);
//            // 获取URLConnection对象对应的输出流
//            out = new PrintWriter(conn.getOutputStream());
//            // 发送请求参数
//            out.print(param);
//            // flush输出流的缓冲
//            out.flush();
//            // 定义BufferedReader输入流来读取URL的响应
//            in = new BufferedReader(
//                    new InputStreamReader(conn.getInputStream(), "utf-8"));
//            String line;
//            while ((line = in.readLine()) != null) {
//                result += line;
//            }
//        } catch (Exception e) {
//            System.out.println("发送 POST 请求出现异常！" + e);
//            log.error(e.getMessage(),e);
//        }
//        //使用finally块来关闭输出流、输入流
//        finally {
//            try {
//                if (out != null) {
//                    out.close();
//                }
//                if (in != null) {
//                    in.close();
//                }
//            } catch (IOException ex) {
//                ex.printStackTrace();
//            }
//        }
//        return result;
//    }
//
//    /**
//     * 发送post请求，参数用map接收
//     *
//     * @param url 地址
//     * @param map 参数
//     * @return 返回值
//     */
//    public static String postMap(String url, Map<String, String> map) {
//        String result = null;
//        CloseableHttpClient httpClient = HttpClients.createDefault();
//        HttpPost post = new HttpPost(url);
//        List<NameValuePair> pairs = new ArrayList<NameValuePair>();
//        for (Map.Entry<String, String> entry : map.entrySet()) {
//            pairs.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));
//        }
//        CloseableHttpResponse response = null;
//        try {
//            post.setEntity(new UrlEncodedFormEntity(pairs, "UTF-8"));
//            response = httpClient.execute(post);
//            if (response != null && response.getStatusLine().getStatusCode() == 200) {
//                HttpEntity entity = response.getEntity();
//                result = entityToString(entity);
//            }
//            return result;
//        } catch (UnsupportedEncodingException e) {
//            log.error(e.getMessage(),e);
//        } catch (ClientProtocolException e) {
//            log.error(e.getMessage(),e);
//        } catch (IOException e) {
//            log.error(e.getMessage(),e);
//        } finally {
//            try {
//                httpClient.close();
//                if (response != null) {
//                    response.close();
//                }
//            } catch (IOException e) {
//                log.error(e.getMessage(),e);
//            }
//
//        }
//        return null;
//    }
//
//    public static Map<String, Object> getSnsResult(String code, String appid, String secret) {
//        Map<String, Object> map = new HashMap<String, Object>();
//        if (null != code && !"".equals(code)) {
//            String snsUrl = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + appid + "&secret=" + secret + "&code=" + code + "&grant_type=authorization_code";
//            String snsResult = sendGet(snsUrl);
//            JSONObject jsonObject = JSONObject.parseObject(snsResult);
//            map = (Map) jsonObject;
//        }
//        return map;
//    }
//
//    private static String entityToString(HttpEntity entity) throws IOException {
//        String result = null;
//        if (entity != null) {
//            long lenth = entity.getContentLength();
//            if (lenth != -1 && lenth < 2048) {
//                result = EntityUtils.toString(entity, "UTF-8");
//            } else {
//                InputStreamReader reader1 = new InputStreamReader(entity.getContent(), "UTF-8");
//                CharArrayBuffer buffer = new CharArrayBuffer(2048);
//                char[] tmp = new char[1024];
//                int l;
//                while ((l = reader1.read(tmp)) != -1) {
//                    buffer.append(tmp, 0, l);
//                }
//                result = buffer.toString();
//            }
//        }
//        return result;
//    }
//
//    /**
//     * post请求，参数为json字符串
//     *
//     * @param url        请求地址
//     * @param jsonString json字符串
//     * @return 响应
//     */
//    public static String postJson(String url, String jsonString) {
//        String result = null;
//        CloseableHttpClient httpClient = HttpClients.createDefault();
//        HttpPost post = new HttpPost(url);
//        CloseableHttpResponse response = null;
//        try {
//            StringEntity stringEntity = new StringEntity(jsonString, "UTF-8");
//            stringEntity.setContentEncoding("UTF-8");
//            stringEntity.setContentType("application/json");
////            post.setEntity(new ByteArrayEntity(jsonString.getBytes("UTF-8")));
//            post.setEntity(stringEntity);
//            response = httpClient.execute(post);
//            if (response != null && response.getStatusLine().getStatusCode() == 200) {
//                HttpEntity entity = response.getEntity();
//                result = entityToString(entity);
//            }
//            return result;
//        } catch (UnsupportedEncodingException e) {
//            log.error(e.getMessage(),e);
//        } catch (ClientProtocolException e) {
//            log.error(e.getMessage(),e);
//        } catch (IOException e) {
//            log.error(e.getMessage(),e);
//        } finally {
//            try {
//                httpClient.close();
//                if (response != null) {
//                    response.close();
//                }
//            } catch (IOException e) {
//                log.error(e.getMessage(),e);
//            }
//        }
//        return null;
//    }
//
//    public static Menu initMenu() throws Exception {
//
//        Menu menu = new Menu();
//
//        ViewButton button21 = new ViewButton();
//
//        button21.setName("台风来啦");
//
//        button21.setType("view");
//
//        String url = URLEncoder.encode("http://dg.syni.com/IETL/#/path", "utf-8");
//        button21.setUrl("https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + WxConfig.dxshAppid + "&redirect_uri=http://dg.syni.com/DGLM/comm/greet?url=" + url + "&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirec");
//
//        ClickButton button31 = new ClickButton();
//
//        button31.setName("小工具");
//
//        ViewButton hitchance = new ViewButton();
//        hitchance.setUrl("http://dg.syni.com/IETL/#/tool/hitchance");
//        hitchance.setName("台风袭击概率");
//        hitchance.setType("view");
//
//        ViewButton windTest = new ViewButton();
//        windTest.setUrl("http://dg.syni.com/IETL/#/tool/windtest");
//        windTest.setName("抗风测试");
//        windTest.setType("view");
//
//
//        button31.setSub_button(new Button[]{hitchance, windTest});
//
//        menu.setButton(new Button[]{button21, button31});// 将31Button直接作为一级菜单
//
//        return menu;
//
//    }
//
//    public static String getSignature(Long timestamp, String noncestr, String url) {
//        //对所有待签名参数按照字段名的ASCII 码从小到大排序（字典序）
//        Map<String, Object> map = new TreeMap<>();
//        map.put("jsapi_ticket", WxConfig.jsapi_ticket);
//        map.put("timestamp", timestamp);
//        map.put("noncestr", noncestr);
//        map.put("url", url);
//        //使用URL键值对的格式（即key1=value1&key2=value2…）拼接成字符串string1
//        StringBuilder sb = new StringBuilder();
//        Set<String> set = map.keySet();
//        for (String key : set) {
//            sb.append(key + "=" + map.get(key)).append("&");
//        }
//        //去掉最后一个&符号
//        String temp = sb.substring(0, sb.length() - 1);
//        //使用sha1加密
//        return sha1(temp);
//    }
//
//    public static String sha1(String str) {
//        try {
//            MessageDigest digest = MessageDigest.getInstance("SHA-1");
//            digest.update(str.getBytes());
//            byte messageDigest[] = digest.digest();
//            // Create Hex String
//            StringBuffer hexString = new StringBuffer();
//            // 字节数组转换为 十六进制 数
//            for (int i = 0; i < messageDigest.length; i++) {
//                String shaHex = Integer.toHexString(messageDigest[i] & 0xFF);
//                if (shaHex.length() < 2) {
//                    hexString.append(0);
//                }
//                hexString.append(shaHex);
//            }
//            return hexString.toString();
//
//        } catch (NoSuchAlgorithmException e) {
//            log.error(e.getMessage(),e);
//        }
//        return "";
//    }
//}
